fix sign comparison warnings git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@290469 91177308-0d34-0410-b5e6-96231b3b80d8 
diff --git a/include/__bit_reference b/include/__bit_reference index 5659ed0..8f24546 100644 --- a/include/__bit_reference +++ b/include/__bit_reference 
@@ -163,7 +163,7 @@  {  typedef __bit_iterator<_Cp, _IsConst> _It;  typedef typename _It::__storage_type __storage_type; - static const unsigned __bits_per_word = _It::__bits_per_word; + static const int __bits_per_word = _It::__bits_per_word;  // do first partial word  if (__first.__ctz_ != 0)  { @@ -199,7 +199,7 @@  {  typedef __bit_iterator<_Cp, _IsConst> _It;  typedef typename _It::__storage_type __storage_type; - static const unsigned __bits_per_word = _It::__bits_per_word; + const int __bits_per_word = _It::__bits_per_word;  // do first partial word  if (__first.__ctz_ != 0)  { @@ -251,7 +251,7 @@  typedef __bit_iterator<_Cp, _IsConst> _It;  typedef typename _It::__storage_type __storage_type;  typedef typename _It::difference_type difference_type; - static const unsigned __bits_per_word = _It::__bits_per_word; + const int __bits_per_word = _It::__bits_per_word;  difference_type __r = 0;  // do first partial word  if (__first.__ctz_ != 0) @@ -282,7 +282,7 @@  typedef __bit_iterator<_Cp, _IsConst> _It;  typedef typename _It::__storage_type __storage_type;  typedef typename _It::difference_type difference_type; - static const unsigned __bits_per_word = _It::__bits_per_word; + const int __bits_per_word = _It::__bits_per_word;  difference_type __r = 0;  // do first partial word  if (__first.__ctz_ != 0) @@ -324,7 +324,7 @@  {  typedef __bit_iterator<_Cp, false> _It;  typedef typename _It::__storage_type __storage_type; - static const unsigned __bits_per_word = _It::__bits_per_word; + const int __bits_per_word = _It::__bits_per_word;  // do first partial word  if (__first.__ctz_ != 0)  { @@ -354,7 +354,7 @@  {  typedef __bit_iterator<_Cp, false> _It;  typedef typename _It::__storage_type __storage_type; - static const unsigned __bits_per_word = _It::__bits_per_word; + const int __bits_per_word = _It::__bits_per_word;  // do first partial word  if (__first.__ctz_ != 0)  { @@ -412,7 +412,7 @@  typedef __bit_iterator<_Cp, _IsConst> _In;  typedef typename _In::difference_type difference_type;  typedef typename _In::__storage_type __storage_type; - static const unsigned __bits_per_word = _In::__bits_per_word; + const int __bits_per_word = _In::__bits_per_word;  difference_type __n = __last - __first;  if (__n > 0)  { @@ -461,7 +461,7 @@  typedef __bit_iterator<_Cp, _IsConst> _In;  typedef typename _In::difference_type difference_type;  typedef typename _In::__storage_type __storage_type; - static const unsigned __bits_per_word = _In::__bits_per_word; + static const int __bits_per_word = _In::__bits_per_word;  difference_type __n = __last - __first;  if (__n > 0)  { @@ -551,7 +551,7 @@  typedef __bit_iterator<_Cp, _IsConst> _In;  typedef typename _In::difference_type difference_type;  typedef typename _In::__storage_type __storage_type; - static const unsigned __bits_per_word = _In::__bits_per_word; + const int __bits_per_word = _In::__bits_per_word;  difference_type __n = __last - __first;  if (__n > 0)  { @@ -600,7 +600,7 @@  typedef __bit_iterator<_Cp, _IsConst> _In;  typedef typename _In::difference_type difference_type;  typedef typename _In::__storage_type __storage_type; - static const unsigned __bits_per_word = _In::__bits_per_word; + const int __bits_per_word = _In::__bits_per_word;  difference_type __n = __last - __first;  if (__n > 0)  { @@ -718,7 +718,7 @@  typedef __bit_iterator<__C1, false> _I1;  typedef typename _I1::difference_type difference_type;  typedef typename _I1::__storage_type __storage_type; - static const unsigned __bits_per_word = _I1::__bits_per_word; + const int __bits_per_word = _I1::__bits_per_word;  difference_type __n = __last - __first;  if (__n > 0)  { @@ -768,7 +768,7 @@  typedef __bit_iterator<__C1, false> _I1;  typedef typename _I1::difference_type difference_type;  typedef typename _I1::__storage_type __storage_type; - static const unsigned __bits_per_word = _I1::__bits_per_word; + const int __bits_per_word = _I1::__bits_per_word;  difference_type __n = __last - __first;  if (__n > 0)  { @@ -959,7 +959,7 @@  typedef __bit_iterator<_Cp, _IC1> _It;  typedef typename _It::difference_type difference_type;  typedef typename _It::__storage_type __storage_type; - static const unsigned __bits_per_word = _It::__bits_per_word; + static const int __bits_per_word = _It::__bits_per_word;  difference_type __n = __last1 - __first1;  if (__n > 0)  { @@ -1041,7 +1041,7 @@  typedef __bit_iterator<_Cp, _IC1> _It;  typedef typename _It::difference_type difference_type;  typedef typename _It::__storage_type __storage_type; - static const unsigned __bits_per_word = _It::__bits_per_word; + static const int __bits_per_word = _It::__bits_per_word;  difference_type __n = __last1 - __first1;  if (__n > 0)  { 
diff --git a/include/deque b/include/deque index f8e0bb8..ed62edd 100644 --- a/include/deque +++ b/include/deque 
@@ -2735,7 +2735,7 @@  difference_type __pos = __f - __b;  iterator __p = __b + __pos;  allocator_type& __a = __base::__alloc(); - if (__pos <= (__base::size() - 1) / 2) + if (static_cast<size_t>(__pos) <= (__base::size() - 1) / 2)  { // erase from front  _VSTD::move_backward(__b, __p, _VSTD::next(__p));  __alloc_traits::destroy(__a, _VSTD::addressof(*__b)); @@ -2773,7 +2773,7 @@  if (__n > 0)  {  allocator_type& __a = __base::__alloc(); - if (__pos <= (__base::size() - __n) / 2) + if (static_cast<size_t>(__pos) <= (__base::size() - __n) / 2)  { // erase from front  iterator __i = _VSTD::move_backward(__b, __p, __p + __n);  for (; __b != __i; ++__b) 
diff --git a/include/istream b/include/istream index 180a395..04845a2 100644 --- a/include/istream +++ b/include/istream 
@@ -1647,7 +1647,7 @@  {  basic_string<_CharT, _Traits> __str;  const ctype<_CharT>& __ct = use_facet<ctype<_CharT> >(__is.getloc()); - streamsize __c = 0; + size_t __c = 0;  ios_base::iostate __err = ios_base::goodbit;  _CharT __zero = __ct.widen('0');  _CharT __one = __ct.widen('1'); 
diff --git a/include/random b/include/random index 794bf7b..4e11f9e 100644 --- a/include/random +++ b/include/random 
@@ -2817,6 +2817,7 @@    static_assert( 0 < __r, "discard_block_engine invalid parameters");  static_assert(__r <= __p, "discard_block_engine invalid parameters"); + static_assert(__r <= INT_MAX, "discard_block_engine invalid parameters");  public:  // types  typedef typename _Engine::result_type result_type; @@ -2918,7 +2919,7 @@  typename discard_block_engine<_Engine, __p, __r>::result_type  discard_block_engine<_Engine, __p, __r>::operator()()  { - if (__n_ >= __r) + if (__n_ >= static_cast<int>(__r))  {  __e_.discard(__p - __r);  __n_ = 0; 
diff --git a/include/regex b/include/regex index baff5d3..1c4cc1d 100644 --- a/include/regex +++ b/include/regex 
@@ -6186,7 +6186,7 @@  _Position __position_;  const value_type* __result_;  value_type __suffix_; - ptrdiff_t _N_; + ptrdiff_t __n_;  vector<int> __subs_;    public: @@ -6269,10 +6269,10 @@  private:  void __init(_BidirectionalIterator __a, _BidirectionalIterator __b);  void __establish_result () { - if (__subs_[_N_] == -1) + if (__subs_[__n_] == -1)  __result_ = &__position_->prefix();  else - __result_ = &(*__position_)[__subs_[_N_]]; + __result_ = &(*__position_)[__subs_[__n_]];  }   };   @@ -6281,7 +6281,7 @@  regex_token_iterator()  : __result_(nullptr),  __suffix_(), - _N_(0) + __n_(0)  {  }   @@ -6292,7 +6292,7 @@  {  if (__position_ != _Position())  __establish_result (); - else if (__subs_[_N_] == -1) + else if (__subs_[__n_] == -1)  {  __suffix_.matched = true;  __suffix_.first = __a; @@ -6309,7 +6309,7 @@  const regex_type& __re, int __submatch,  regex_constants::match_flag_type __m)  : __position_(__a, __b, __re, __m), - _N_(0), + __n_(0),  __subs_(1, __submatch)  {  __init(__a, __b); @@ -6321,7 +6321,7 @@  const regex_type& __re, const vector<int>& __submatches,  regex_constants::match_flag_type __m)  : __position_(__a, __b, __re, __m), - _N_(0), + __n_(0),  __subs_(__submatches)  {  __init(__a, __b); @@ -6336,7 +6336,7 @@  initializer_list<int> __submatches,  regex_constants::match_flag_type __m)  : __position_(__a, __b, __re, __m), - _N_(0), + __n_(0),  __subs_(__submatches)  {  __init(__a, __b); @@ -6352,7 +6352,7 @@  const int (&__submatches)[_Np],  regex_constants::match_flag_type __m)  : __position_(__a, __b, __re, __m), - _N_(0), + __n_(0),  __subs_(__submatches, __submatches + _Np)  {  __init(__a, __b); @@ -6364,7 +6364,7 @@  : __position_(__x.__position_),  __result_(__x.__result_),  __suffix_(__x.__suffix_), - _N_(__x._N_), + __n_(__x.__n_),  __subs_(__x.__subs_)  {  if (__x.__result_ == &__x.__suffix_) @@ -6386,7 +6386,7 @@  else  __result_ = __x.__result_;  __suffix_ = __x.__suffix_; - _N_ = __x._N_; + __n_ = __x.__n_;  __subs_ = __x.__subs_;    if ( __result_ != nullptr && __result_ != &__suffix_ ) @@ -6409,7 +6409,7 @@  return false;  if (__result_ == &__suffix_ || __x.__result_ == &__x.__suffix_)  return false; - return __position_ == __x.__position_ && _N_ == __x._N_ && + return __position_ == __x.__position_ && __n_ == __x.__n_ &&  __subs_ == __x.__subs_;  }   @@ -6420,14 +6420,14 @@  _Position __prev = __position_;  if (__result_ == &__suffix_)  __result_ = nullptr; - else if (_N_ + 1 < __subs_.size()) + else if (static_cast<size_t>(__n_ + 1) < __subs_.size())  { - ++_N_; + ++__n_;  __establish_result();  }  else  { - _N_ = 0; + __n_ = 0;  ++__position_;  if (__position_ != _Position())  __establish_result(); 
diff --git a/test/libcxx/test/config.py b/test/libcxx/test/config.py index 26e7a44..250c2f1 100644 --- a/test/libcxx/test/config.py +++ b/test/libcxx/test/config.py 
@@ -659,13 +659,11 @@  # These warnings should be enabled in order to support the MSVC  # team using the test suite; They enable the warnings below and  # expect the test suite to be clean. - self.cxx.addWarningFlagIfSupported('-Wno-sign-compare') + self.cxx.addWarningFlagIfSupported('-Wsign-compare')  self.cxx.addWarningFlagIfSupported('-Wunused-variable')  self.cxx.addWarningFlagIfSupported('-Wunused-parameter')  # FIXME: Enable the two warnings below.  self.cxx.addWarningFlagIfSupported('-Wno-conversion') - # TODO(EricWF) Remove the unused warnings once the test suite - # compiles clean with them.  self.cxx.addWarningFlagIfSupported('-Wno-unused-local-typedef')  std = self.get_lit_conf('std', None)  if std in ['c++98', 'c++03']: